      SUBROUTINE CHKCHR 
C Checks that incorrect relational operators
C are not used to compare   
C character strings in IF clauses.  
C INPUT ; current statement description 
C OUTPUT ; NFAULT   
C   
      include 'PARAM.h' 
      include 'ALCAZA.h' 
      include 'CLASS.h' 
      include 'FLAGS.h' 
      include 'CURSTA.h' 
      include 'STATE.h' 
      include 'USSTMT.h' 
      include 'USUNIT.h' 
      include 'USLTYD.h' 
      include 'USIGNO.h' 
      include 'CHECKS.h' 
      LOGICAL BTEST 
      IF(UNFLP) RETURN  
      IF(.NOT.LCHECK(42)) RETURN
      ICL1 = ICURCL(1)  
      IF(.NOT.LIFF(ICL1)) RETURN
C Find end of IF
      ILOC = INDEX(SSTA(:NCHST),'(')
      IF(ILOC.EQ.0)  RETURN 
      CALL SKIPLV(SSTA,ILOC+1,NCHST,.FALSE.,ILOCE,ILEV) 
      IF(ILOCE.EQ.0) RETURN 
      DO 40 I=1,NSNAME  
C Looping over variable names in the statement  
         IF(NSSTRT(I).GT.ILOCE) RETURN  
C Variable is inside IF clause  
         IF(.NOT.BTEST(NAMTYP(ISNAME+I),5))                      GOTO 40
C Character variable
         DO 10 IPOS=NSSTRT(I)-1,ILOC+1,-1   
            IF(SSTA(IPOS:IPOS).EQ.' ')                           GOTO 10
            IF(SSTA(IPOS:IPOS).EQ.'(')                           GOTO 20
            IF(SSTA(IPOS:IPOS).NE.'.')                           GOTO 20
C Check for incorrect relational operators  
            IF(SSTA(IPOS-3:IPOS).EQ.'.OR.')                      GOTO 20
            IF(SSTA(IPOS-3:IPOS).EQ.'.EQ.')                      GOTO 20
            IF(SSTA(IPOS-3:IPOS).EQ.'.NE.')                      GOTO 20
            IF(SSTA(IPOS-4:IPOS).EQ.'.AND.')                     GOTO 20
            IF(ILOCE-ILOC.GT.20) ILOCE=ILOC+20  
            WRITE(MZUNIT,500) SSTA(ILOC:ILOCE)  
            NFAULT = NFAULT + 1 
            RETURN  
   10    CONTINUE   
   20    ILEV = 0   
         DO 30 IPOS=NSEND(I)+1,ILOCE-1  
            IF(SSTA(IPOS:IPOS).EQ.' ')                           GOTO 30
            IF(SSTA(IPOS:IPOS).EQ.'(') ILEV=ILEV+1  
            IF(SSTA(IPOS:IPOS).EQ.')') ILEV=ILEV-1  
            IF(SSTA(IPOS:IPOS).EQ.')')                           GOTO 30
            IF(ILEV.NE.0)                                        GOTO 30
            IF(SSTA(IPOS:IPOS).NE.'.')                           GOTO 40
            IF(SSTA(IPOS:IPOS+3).EQ.'.OR.')                      GOTO 40
            IF(SSTA(IPOS:IPOS+3).EQ.'.EQ.')                      GOTO 40
            IF(SSTA(IPOS:IPOS+3).EQ.'.NE.')                      GOTO 40
            IF(SSTA(IPOS:IPOS+4).EQ.'.AND.')                     GOTO 40
            IF(ILOCE-ILOC.GT.20) ILOCE=ILOC+20  
            WRITE(MZUNIT,500) SSTA(ILOC:ILOCE)  
            NFAULT = NFAULT + 1 
            RETURN  
   30    CONTINUE   
   40 CONTINUE  
      RETURN
  500 FORMAT(1X,'!!! WARNING ... IF CLAUSE ',A,' USES', 
     +' INCORRECT RELATIONAL OPERATORS FOR CHARACTER TYPE') 
      END   
